package com.zenithmind.note.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zenithmind.note.pojo.entity.NoteTagRelation;

import java.util.List;

/**
 * 笔记标签关联服务接口
 */
public interface NoteTagRelationService extends IService<NoteTagRelation> {
    
    /**
     * 为笔记设置标签
     * 
     * @param noteId 笔记ID
     * @param tagIds 标签ID列表
     */
    void setNoteTags(String noteId, List<String> tagIds);
    
    /**
     * 获取笔记的标签ID列表
     * 
     * @param noteId 笔记ID
     * @return 标签ID列表
     */
    List<String> getTagIdsByNoteId(String noteId);
    
    /**
     * 获取标签关联的笔记ID列表
     * 
     * @param tagId 标签ID
     * @return 笔记ID列表
     */
    List<String> getNoteIdsByTagId(String tagId);
    
    /**
     * 删除笔记的所有标签关联
     * 
     * @param noteId 笔记ID
     */
    void deleteByNoteId(String noteId);
    
    /**
     * 删除标签的所有笔记关联
     *
     * @param tagId 标签ID
     */
    void deleteByTagId(String tagId);

    /**
     * 添加笔记标签关联
     *
     * @param noteId 笔记ID
     * @param tagId 标签ID
     */
    void addNoteTag(String noteId, String tagId);

    /**
     * 移除笔记标签关联
     *
     * @param noteId 笔记ID
     * @param tagId 标签ID
     */
    void removeNoteTag(String noteId, String tagId);
}